\subsection{Debugging del programa}

El debugging del programa se realizó sobre \platformhost \space usando \GDB \space en la línea de comando directamente y apoyado por el \textit{front-end} que provee el \textbf{IDE} \textit{Code::Blocks}, sobre este \textbf{IDE} se trabajó la edición de los archivos, con lo que es cómodo realizar el debugging en forma gráfica en el mismo entorno.

\subsection{Pruebas de la salida}

Para comprobar el correcto funcionamiento del programa en \platformhost\space en forma automática, se escribió un script, \quotefile{test.sh}, el cuál básicamente realiza las pruebas planteadas en el enunciado mas algunas otras, comparando su salida con las salidas esperadas, las cuales fueron previamente generadas manualmente en archivos de texto, la prueba es exitosa cuando la salida producida concuerda con la esperada, la comparación se realiza con el comando \textbf{diff}, el cual es utilizado para comparar archivos de texto.
En los casos en que se espera que el programa falle, por que intencionalmente se mal-forma la linea de comando para lograr esto, la salida esperada se compara con la salida que el programa produce, pero por \textit{stderr}, ya que en esos casos el programa no produce salida alguna por \textit{stdout}.
Como se menciona en la sección sobre compilado del programa, este script puede ser llamado en forma directa, o mediante una opción del makefile~[\ref{maketestscript}].

\begin{flushleft}
\filebox{A continuación se muestra el archivo \textcolor{red}{\quotefile{test.sh}}:}{Aluminium2}
\end{flushleft}

\label{testscript}
%******************************************************************************************
\lstset{language=sh,numbers=left,xleftmargin=1em,stepnumber=1}

\lstset{showspaces=false}
\lstset{showstringspaces=false}
\normalfont
\normalsize
\lstset{backgroundcolor=\color{white},rulecolor=\color{blue}}
\lstset{basicstyle=\ttfamily\color{deepblue}}

\lstset{keywordstyle=[1]\ttfamily\color{red}\bfseries}
\lstset{keywordstyle=[2]\ttfamily\color{LightSkyBlue}}
\lstset{keywordstyle=[3]\ttfamily\bfseries\color{Plum}}
\lstset{keywordstyle=[4]\ttfamily\bfseries\color{Chocolate}}

\lstset{identifierstyle=\ttfamily\color{black}}
\lstset{commentstyle=\ttfamily\color{blue}\textit}
\lstset{stringstyle=\ttfamily\color{purple}\upshape}
\lstset{tabsize=8}

\lstset{numberstyle=\ttfamily\color{deeppurple}\upshape}
\lstset{numbersep=5pt}

\lstset{inputencoding=utf8/latin1}


\fontencoding{T1}
\fontseries{m}
\fontsize{6pt}{7pt}
\selectfont
%******************************************************************************************

%*********************************************
\lstinputlisting{./../test.sh}
%*********************************************

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

\clearpage

Las salidas producidas por el script, se muestran a continuación:

\begin{enumerate}
\item 8x8 con salida por consola:\\


\begin{lstlisting}
$ tp0 -r 8x8 -o -
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

Esperado:
\begin{verbatim}
P2
8
8
1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 
\end{verbatim}

Obtenido :
\begin{verbatim}
P2
8
8
1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1

Prueba exitosa.
\end{verbatim}

\clearpage

\item 16x8 con salida por consola:\\

%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 -r 16x8 -o -
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

Esperado:
\begin{verbatim}
P2
16
8
1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
\end{verbatim}

Obtenido:
\begin{verbatim}
P2
16
8
1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Prueba exitosa.
\end{verbatim}

\clearpage

\item 16x16 con salida a archivo :

%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 -r 16x16 -o "/tmp/test"
$ cat "/tmp/test"
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

Esperado:
\begin{verbatim}
P2
16
16
1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

\end{verbatim}

\clearpage

Obtenido:
\begin{verbatim}
P2
16
16
1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

Prueba exitosa.
\end{verbatim}


\end{enumerate}

\clearpage

Probamos los comandos que acepta el programa:
\begin{enumerate}
\item : Probamos pasarle algún comando no existente, debería tirar un mensaje de error y matar el proceso.

%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 -d
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

\begin{verbatim}
Fatal error (code 3): Invalid command line.

Usage:

        ./tp0 -V
        ./tp0 -h
        ./tp0 [options]

Options:

        -V, --version           Print version and quit.
        -h, --help              Print this information.
        -r, --resolution        Set bitmap resolution to WxH pixels.

        -o, --output            Path to output file.
Examples:

        ./tp0 -o output.pgm
        ./tp0 -r 800x600 -o file.pgm

Prueba exitosa.
\end{verbatim}

\clearpage

\item Probamos el comando ayuda en sus dos formatos (-h, --help), debería mostrar el menú:

%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 -h
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

\begin{verbatim}

Usage:

        ./tp0 -V
        ./tp0 -h
        ./tp0 [options]

Options:

        -V, --version           Print version and quit.
        -h, --help              Print this information.
        -r, --resolution        Set bitmap resolution to WxH pixels.

        -o, --output            Path to output file.
Examples:

        ./tp0 -o output.pgm
        ./tp0 -r 800x600 -o file.pgm

Prueba exitosa.
\end{verbatim}


%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 --help
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

\begin{verbatim}

Usage:

        ./tp0 -V
        ./tp0 -h
        ./tp0 [options]

Options:

... (Idem que el anterior)

Prueba exitosa.
\end{verbatim}


\item Probamos el comando version en sus dos formatos (-V, --version), debería mostrar la version:

%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 -V
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

\begin{verbatim}
TP0 66.20 version: 0.8.0

Prueba exitosa.
\end{verbatim}

%******************************************************************************************
\fontencoding{T1}
\fontseries{m}
\fontsize{10pt}{11pt}
\selectfont
%******************************************************************************************

\begin{lstlisting}
$ tp0 --version
\end{lstlisting}

%******************************************************************************************
\normalfont
\normalsize
%******************************************************************************************

\begin{verbatim}
TP0 66.20 version: 0.8.0

Prueba exitosa.
\end{verbatim}

\end{enumerate}

\clearpage